【嵌入式Linux之QEMU模拟器】3、编译Linux内核与dtb文件 您所在的位置:网站首页 qemu编译 deb canon 【嵌入式Linux之QEMU模拟器】3、编译Linux内核与dtb文件

【嵌入式Linux之QEMU模拟器】3、编译Linux内核与dtb文件

2024-07-14 05:44| 来源: 网络整理| 查看: 265

1、下载Linux内核

除了以下两种正统方法,还可以到我的云盘下载。

方法一:

在终端使用git clone git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git/进行自动下载。

下载的速度如果慢的无法忍受的话,建议使用第二种官网下载

方法二:

官网 在这里插入图片描述

下载LTS的4.4.×版本。

2、下载完毕后,将其拖曳到Ubuntu中,输入tar xvf linux-4.4.195.tar.xz解压缩. 在这里插入图片描述

3、进入到解压后的文件夹,然后输入vi Makefile

在这里插入图片描述 在vi的一般模式下,输入/CROSS_COMPILE,进行搜索CROSS_COMPILE。**

修改ARCH和CROSS_COMPILE的值,如下图所示。 在这里插入图片描述

针对我的linux-4.4.195版本的是在257行~258行

ARCH ?= arm CROSS_COMPILE ?= arm-linux-gnueabi-

4、修改配置文件

在正式修改配置文件之前,先看一下我们的仿真开发板所在位置。

①、输入cd ./arch可以看到QEMU支持的多种架构CPU,其中我们要关注是ARM

在这里插入图片描述

②、输入cd ./arm可以看到ARM支持的开发板

在这里插入图片描述 其中有我们本次要使用的vexpress开发板,当然还包括了其他好多,比如三星的S3C2440等!

下面让我们来查看仿真开发板的配置文件所在目录及具体内容

①、输入cd ./configs在这里插入图片描述

②、输入vi vexpress_defconfig

针对不同的开发板,Linux内核都有一个不同的配置文件

进入可详细查看,针对vexpress的内核配置。

其中...=y中的y表示编译器内核,即静态编译。而相对的y表示动态编译。

接下来便是正式配置环节

①、退回到内核的根目录,即./linux-4.4.195目录下!

输入make vexpress_defconfig

在这里插入图片描述

输入ll可查看刚刚生成的.config文件

在这里插入图片描述

②、输入make zImage -j6,进行编译内核。【且同时开启了6个线程】

(时间蛮长的…) 在这里插入图片描述

编译完成后… 在这里插入图片描述

编译生成的内核为ach/arm/boot中的zImage。【zImage和平台无关】

③、输入make modules -j4,进行编译内核模块

在这里插入图片描述

④、输入make dtbs,进行编译dtbs文件

dtbs和具体开发板有关

在这里插入图片描述

⑤、输入qemu-system-arm -M vexpress-a9 -m 512M -kernel arch/arm/boot/zImage -dtb arch/arm/boot/dts/vexpress-v2p-ca9.dtb -nographic -append "console=ttyAMA0",用以验证内核是否编译成功。

在这里插入图片描述 最后还是跟之前一样,我们还有挂载文件系统而已,稍后便可解决!

这里再学习两个技巧:

技巧一:

最后的这个进程无法用普通的ctrl + C的方法关闭,可以采用下面方法。 ①、新打开一个终端,输入ps -a,查看对应的PID号 在这里插入图片描述 ②、输入kill 121088

技巧二:

发现最后一个执行的内容挺长的,这里我们可以制造一个脚本,通过运行脚本的方式,直接编译! ①、在内核./QEMU根目录下,输入touch boot.sh。 ②、为这个脚本的所有执行用户赋予可执行的权限,输入chmod a+x boot.sh ③、通过输入vi boot.sh,将上述长命令拷贝进来!【太长的话可以换行,行间需要加入\】【如下代码】 ④、输入./boot.sh即可执行该脚本 【注意,目录要变得话,里面的路径也需要变。也就是说该脚本只能固定存放在某个目录下!(以上所述例子是在./QEMU目录下!)】

qemu-system-arm \ -M vexpress-a9 \ -m 512M \ -kernel linux-4.4.195/arch/arm/boot/zImage \ -dtb linux-4.4.195/arch/arm/boot/dts/vexpress-v2p-ca9.dtb \ -nographic \ -append "console=ttyAMA0"

脚本换行,有一个需要注意的问题,必须让后面的换行符高亮,如果呈现白色说明,上下两行之间空格太多,应重新回车换行! 在这里插入图片描述



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有